local extension = Package:new("meng")
extension.extensionName = "king"
local U = require "packages/utility/utility"


Fk:loadTranslationTable{
  ["meng"] = "盟",
}

--[[local meng__yuanshao = General:new(extension,"meng__yuanshao","qun",4)


Fk:loadTranslationTable{
  ["meng__yuanshao"] = "盟袁绍",
  ["designer:meng__yuanshao"] = "妄生",
  ["cv:meng__yuanshao"] = "配音演员",
  ["illustrator:meng__yuanshao"] = "老版三国演义",


}]]



--[[local meng__dongzhuo = General:new(extension,"meng__dongzhuo","qun",5)

local doJianjieMarkChange = function (room, player, mark, acquired, proposer)
  local skill = (mark == "@@dragon_mark") and "jj__huoji&" or "jj__lianhuan&"
  room:setPlayerMark(player, mark, acquired and 1 or 0)
  if not acquired then skill = "-"..skill end
  room:handleAddLoseSkills(player, skill, nil, false)
  local double_mark = (player:getMark("@@dragon_mark") > 0 and player:getMark("@@phoenix_mark") > 0)
  local yy_skill = double_mark and "jj__yeyan&" or "-jj__yeyan&"
  room:handleAddLoseSkills(player, yy_skill, nil, false)
  if acquired then
    proposer:broadcastSkillInvoke("jianjie", double_mark and 3 or math.random(2))
  end
end--
local meng__haoshou = fk.CreateActiveSkill{
  name = "meng__haoshou",
  anim_type = "control",
  mute = true,
  can_use = function(self, player)
    return player:getMark("meng__haoshou-turn") == 0 and player:usedSkillTimes(self.name, Player.HistoryPhase) == 0
  end,
  interaction = function()
    return UI.ComboBox {choices = {"wen_mark_move", "wu_mark_move"}}
  end,
  card_num = 0,
  card_filter = Util.FalseFunc,
  target_num = 2,
  target_filter = function(self, to_select, selected)
    if #selected == 2 or not self.interaction.data then return false end
    local to = Fk:currentRoom():getPlayerById(to_select)
    local mark = (self.interaction.data == "wu_mark_move") and "@@wen_mark" or "@@wu_mark"
    if #selected == 0 then
      return to:getMark(mark) > 0
    else
      return to:getMark(mark) == 0
    end
  end,
  on_use = function(self, room, effect)
    local player = room:getPlayerById(effect.from)
    room:notifySkillInvoked(player, self.name)
    local from = room:getPlayerById(effect.tos[1])
    local to = room:getPlayerById(effect.tos[2])
    local mark = (self.interaction.data == "wu_mark_move") and "@@wen_mark" or "@@wu_mark"
    doJianjieMarkChange (room, from, mark, false, player)
    doJianjieMarkChange (room, to, mark, true, player)
  end,
}--
local jianjie_trigger = fk.CreateTriggerSkill{
  name = "#jianjie_trigger",
  events = {fk.TurnStart, fk.Death},
  main_skill = jianjie,
  mute = true,
  can_trigger = function(self, event, target, player, data)
    if event == fk.TurnStart then
      return player:hasSkill(self) and player:getMark("jianjie-turn") > 0
    else
      return player:hasSkill(self) and (target:getMark("@@dragon_mark") > 0 or target:getMark("@@phoenix_mark") > 0)
    end
  end,
  on_cost = function (self, event, target, player, data)
    if event == fk.TurnStart then return true end
    local room = player.room
    local gives = {}
    if target:getMark("@@dragon_mark") > 0 then
      local dra_tars = table.filter(room.alive_players, function(p) return p:getMark("@@dragon_mark") == 0 end)
      if #dra_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(dra_tars, Util.IdMapper), 1, 1, "#dragon_mark-move::"..target.id, self.name, true)
        if #tos > 0 then
          table.insert(gives, {"@@dragon_mark", tos[1]})
        end
      end
    end
    if target:getMark("@@phoenix_mark") > 0 then
      local dra_tars = table.filter(room.alive_players, function(p) return p:getMark("@@phoenix_mark") == 0 end)
      if #dra_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(dra_tars, Util.IdMapper), 1, 1, "#phoenix_mark-move::"..target.id, self.name, true)
        if #tos > 0 then
          table.insert(gives, {"@@phoenix_mark", tos[1]})
        end
      end
    end
    if #gives > 0 then
      self.cost_data = gives
      return true
    end
  end,
  on_use = function(self, event, target, player, data)
    local room = player.room
    room:notifySkillInvoked(player, "jianjie")
    if event == fk.TurnStart then
      local dra_tars = table.filter(room:getOtherPlayers(player), function(p) return p:getMark("@@dragon_mark") == 0 end)
      local dra
      if #dra_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(dra_tars, Util.IdMapper), 1, 1, "#dragon_mark-give", self.name, false)
        if #tos > 0 then
          dra = room:getPlayerById(tos[1])
          doJianjieMarkChange (room, dra, "@@dragon_mark", true, player)
        end
      end
      local pho_tars = table.filter(room:getOtherPlayers(player), function(p) return p:getMark("@@phoenix_mark") == 0 end)
      table.removeOne(pho_tars, dra)
      if #pho_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(pho_tars, Util.IdMapper), 1, 1, "#phoenix_mark-give", self.name, false)
        if #tos > 0 then
          local pho = room:getPlayerById(tos[1])
          doJianjieMarkChange (room, pho, "@@phoenix_mark", true, player)
        end
      end
    else
      for _, dat in ipairs(self.cost_data) do
        local mark = dat[1]
        local p = room:getPlayerById(dat[2])
        doJianjieMarkChange (room, p, mark, true, player)
      end
    end
  end,

  refresh_events = {fk.TurnStart, fk.EventAcquireSkill, fk.EventLoseSkill, fk.BuryVictim},
  can_refresh = function (self, event, target, player, data)
    if event == fk.TurnStart then
      return player:hasSkill(self,true) and target == player
    elseif event == fk.EventAcquireSkill then
      return target == player and data == self and player.room:getTag("RoundCount")
    elseif event == fk.EventLoseSkill then
      return data == self and (player:getMark("@@dragon_mark") > 0 or player:getMark("@@phoenix_mark") > 0)
    elseif event == fk.BuryVictim then
      return (target == player or target:hasSkill(self, true, true))
      and (player:getMark("@@dragon_mark") > 0 or player:getMark("@@phoenix_mark") > 0)
    end
  end,
  on_refresh = function (self, event, target, player, data)
    local room = player.room
    if event == fk.TurnStart or event == fk.EventAcquireSkill then
      local current_event = room.logic:getCurrentEvent()
      if not current_event then return end
      local turn_event = current_event:findParent(GameEvent.Turn, true)
      if not turn_event then return end
      local events = room.logic.event_recorder[GameEvent.Turn] or Util.DummyTable
      for _, e in ipairs(events) do
        local current_player = e.data[1]
        if current_player == player then
          if turn_event.id == e.id then
            room:setPlayerMark(player, "jianjie-turn", 1)
          end
          break
        end
      end
    else
      doJianjieMarkChange (room, player, "@@dragon_mark", false)
      doJianjieMarkChange (room, player, "@@phoenix_mark", false)
    end
  end,
}--
local meng__baonve = fk.CreateTriggerSkill{
  name = "meng__baonve"

}--

local meng__benghuai = fk.CreateTriggerSkill{
  name = "meng__benghuai",
  anim_type = "negative",
  frequency = Skill.Compulsory,
  events = {fk.EventPhaseStart},
  can_trigger = function(self, event, target, player, data)
    return target == player and player:hasSkill(self) and player.phase == Player.Finish 
  end,
  on_use = function(self, event, target, player, data)
    local room = player.room
    local n = 0
    for _, p in ipairs(Fk:currentRoom().alive_players) do
      if p:isFemale() then
          n = n + 1
          end
        if n > 0 then 
          room:loseHp(player, 1, self.name)
          end
        end
  end,
}
local meng__shenfen = fk.CreateActiveSkill{
  name = "meng__shenfen",
  anim_type = "offensive",
  frequency = Skill.Limited,
  can_use = function(self, player)
    return player:usedSkillTimes(self.name, Player.HistoryGame) == 0
  end,
  card_num = 0,
  target_num = 0,
  card_filter = Util.FalseFunc,
  on_use = function(self, room, effect)
    local player = room:getPlayerById(effect.from)
    local targets = room:getOtherPlayers(player, true)
    room:doIndicate(effect.from, table.map(targets, Util.IdMapper))
    table.forEach(targets, function(p)
      if not p.dead then room:damage{ from = player, to = p, damage = 1, skillName = self.name } end
    end)
    table.forEach(targets, function(p)
      if not p.dead then p:throwAllCards("e") end
    end)
    table.forEach(targets, function(p)
      if not p.dead then
        room:askForDiscard(p, 4, 4, false, self.name, false)
      end
    end)
  end
}
meng__dongzhuo:addSkill(meng__haoshou)
meng__dongzhuo:addSkill(meng__baonve)
meng__dongzhuo:addSkill(meng__benghuai)

meng__dongzhuo:addRelatedSkill(meng__shenfen)
meng__dongzhuo:addRelatedSkill("ol_ex__fencheng")
meng__dongzhuo:addRelatedSkill("shenwei")
meng__dongzhuo:addRelatedSkill("wushuang")
meng__dongzhuo:addRelatedSkill("m_ex__mieji")
meng__dongzhuo:addRelatedSkill("m_ex__juece")
Fk:loadTranslationTable{
  ["meng__dongzhuo"] = "盟董卓（未完）",
  ["designer:meng__dongzhuo"] = "妄生",
  ["meng__haoshou"] = "豪首",
  [":meng__haoshou"] = "你的回合开始时，你收回场上的“文印”和“武印”，并令一名其他角色获得“文印”，然后令一名其他角色获得“武印”；"..
  "<br><font color='grey'>•拥有 “文印”/“武印” 的角色视为拥有技能“绝策”和“灭计”/“神威”和“无双”；"..
  "<br>•同时拥有“文印”和“武印”的角色视为拥有技能“焚城”和“神愤”，且发动“焚城”或“神愤”后在回合结束时移去“文印”和“武印”。"..
  "<br>•你死亡时移除“文印”/“武印”。",
  ["meng__baonve"] = "暴虐",
  [":meng__baonve"] = "若拥有“文印”或“武印”的角色对你造成伤害时，此伤害+1；若未拥有“文印”或“武印”的角色对你造成伤害，且场上存在拥有“文印”或“武印”的角色时，此伤害-1.",
  ["meng__benghuai"] = "崩坏",
  [":meng__benghuai"] = "锁定技，结束阶段，若场上存在女性角色，你失去一点体力。",
  [[ ["2"] = "2",
  ["=2"] = "若场上存在袁绍且其存活，你获得技能【..】",
  ["meng__shenfen"] = "神愤",
  [":meng__shenfen"] = "限定技，你对所有其他角色各造成1点伤害，然后这些角色各弃置其装备区里的所有牌，各弃置四张手牌。",
  ["ol_ex__fencheng"] = "焚城",
  [":ol_ex__fencheng"] = "限定技，出牌阶段，你可以选择一名其他角色开始，所有其他角色依次选择一项：1.弃置任意张牌（须比上家弃置的牌多）；2.受到"..
  "你造成的2点火焰伤害。",
  ["shenwei"] = "神威",
  [":shenwei"] = "锁定技，摸牌阶段，你额外摸两张牌；你的手牌上限+2。",
  ["wushuang"] = "无双",
  [":wushuang"] = "锁定技，当你使用【杀】指定目标后，其使用【闪】抵消此【杀】的方式改为需连续使用两张【闪】；当你使用【决斗】指定目标后，或当你成为【决斗】的目标后，你令其打出【杀】响应此【决斗】的方式改为需连续打出两张【杀】。",
  ["m_ex__mieji"] = "灭计",
  [":m_ex__mieji"] = "出牌阶段限一次，你可以将一张黑色锦囊牌置于牌堆顶，令一名其他角色选择一项：1.将一张锦囊牌交给你；2.依次弃置两张非锦囊牌（不足则弃置一张）。",
  ["m_ex__juece"] = "绝策",
  [":m_ex__juece"] = "结束阶段，你可以对本回合失去过牌的一名其他角色造成1点伤害。",

  


}]]



--[[local meng__dongzhuo = General:new(extension,"meng__dongzhuo","qun",5)

local doJianjieMarkChange = function (room, player, mark, acquired, proposer)
  local skill = (mark == "@@dragon_mark") and "jj__huoji&" or "jj__lianhuan&"
  room:setPlayerMark(player, mark, acquired and 1 or 0)
  if not acquired then skill = "-"..skill end
  room:handleAddLoseSkills(player, skill, nil, false)
  local double_mark = (player:getMark("@@dragon_mark") > 0 and player:getMark("@@phoenix_mark") > 0)
  local yy_skill = double_mark and "jj__yeyan&" or "-jj__yeyan&"
  room:handleAddLoseSkills(player, yy_skill, nil, false)
  if acquired then
    proposer:broadcastSkillInvoke("jianjie", double_mark and 3 or math.random(2))
  end
end--
local meng__haoshou = fk.CreateActiveSkill{
  name = "meng__haoshou",
  anim_type = "control",
  mute = true,
  can_use = function(self, player)
    return player:getMark("meng__haoshou-turn") == 0 and player:usedSkillTimes(self.name, Player.HistoryPhase) == 0
  end,
  interaction = function()
    return UI.ComboBox {choices = {"wen_mark_move", "wu_mark_move"}}
  end,
  card_num = 0,
  card_filter = Util.FalseFunc,
  target_num = 2,
  target_filter = function(self, to_select, selected)
    if #selected == 2 or not self.interaction.data then return false end
    local to = Fk:currentRoom():getPlayerById(to_select)
    local mark = (self.interaction.data == "wu_mark_move") and "@@wen_mark" or "@@wu_mark"
    if #selected == 0 then
      return to:getMark(mark) > 0
    else
      return to:getMark(mark) == 0
    end
  end,
  on_use = function(self, room, effect)
    local player = room:getPlayerById(effect.from)
    room:notifySkillInvoked(player, self.name)
    local from = room:getPlayerById(effect.tos[1])
    local to = room:getPlayerById(effect.tos[2])
    local mark = (self.interaction.data == "wu_mark_move") and "@@wen_mark" or "@@wu_mark"
    doJianjieMarkChange (room, from, mark, false, player)
    doJianjieMarkChange (room, to, mark, true, player)
  end,
}--
local jianjie_trigger = fk.CreateTriggerSkill{
  name = "#jianjie_trigger",
  events = {fk.TurnStart, fk.Death},
  main_skill = jianjie,
  mute = true,
  can_trigger = function(self, event, target, player, data)
    if event == fk.TurnStart then
      return player:hasSkill(self) and player:getMark("jianjie-turn") > 0
    else
      return player:hasSkill(self) and (target:getMark("@@dragon_mark") > 0 or target:getMark("@@phoenix_mark") > 0)
    end
  end,
  on_cost = function (self, event, target, player, data)
    if event == fk.TurnStart then return true end
    local room = player.room
    local gives = {}
    if target:getMark("@@dragon_mark") > 0 then
      local dra_tars = table.filter(room.alive_players, function(p) return p:getMark("@@dragon_mark") == 0 end)
      if #dra_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(dra_tars, Util.IdMapper), 1, 1, "#dragon_mark-move::"..target.id, self.name, true)
        if #tos > 0 then
          table.insert(gives, {"@@dragon_mark", tos[1]})
        end
      end
    end
    if target:getMark("@@phoenix_mark") > 0 then
      local dra_tars = table.filter(room.alive_players, function(p) return p:getMark("@@phoenix_mark") == 0 end)
      if #dra_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(dra_tars, Util.IdMapper), 1, 1, "#phoenix_mark-move::"..target.id, self.name, true)
        if #tos > 0 then
          table.insert(gives, {"@@phoenix_mark", tos[1]})
        end
      end
    end
    if #gives > 0 then
      self.cost_data = gives
      return true
    end
  end,
  on_use = function(self, event, target, player, data)
    local room = player.room
    room:notifySkillInvoked(player, "jianjie")
    if event == fk.TurnStart then
      local dra_tars = table.filter(room:getOtherPlayers(player), function(p) return p:getMark("@@dragon_mark") == 0 end)
      local dra
      if #dra_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(dra_tars, Util.IdMapper), 1, 1, "#dragon_mark-give", self.name, false)
        if #tos > 0 then
          dra = room:getPlayerById(tos[1])
          doJianjieMarkChange (room, dra, "@@dragon_mark", true, player)
        end
      end
      local pho_tars = table.filter(room:getOtherPlayers(player), function(p) return p:getMark("@@phoenix_mark") == 0 end)
      table.removeOne(pho_tars, dra)
      if #pho_tars > 0 then
        local tos = room:askForChoosePlayers(player, table.map(pho_tars, Util.IdMapper), 1, 1, "#phoenix_mark-give", self.name, false)
        if #tos > 0 then
          local pho = room:getPlayerById(tos[1])
          doJianjieMarkChange (room, pho, "@@phoenix_mark", true, player)
        end
      end
    else
      for _, dat in ipairs(self.cost_data) do
        local mark = dat[1]
        local p = room:getPlayerById(dat[2])
        doJianjieMarkChange (room, p, mark, true, player)
      end
    end
  end,

  refresh_events = {fk.TurnStart, fk.EventAcquireSkill, fk.EventLoseSkill, fk.BuryVictim},
  can_refresh = function (self, event, target, player, data)
    if event == fk.TurnStart then
      return player:hasSkill(self,true) and target == player
    elseif event == fk.EventAcquireSkill then
      return target == player and data == self and player.room:getTag("RoundCount")
    elseif event == fk.EventLoseSkill then
      return data == self and (player:getMark("@@dragon_mark") > 0 or player:getMark("@@phoenix_mark") > 0)
    elseif event == fk.BuryVictim then
      return (target == player or target:hasSkill(self, true, true))
      and (player:getMark("@@dragon_mark") > 0 or player:getMark("@@phoenix_mark") > 0)
    end
  end,
  on_refresh = function (self, event, target, player, data)
    local room = player.room
    if event == fk.TurnStart or event == fk.EventAcquireSkill then
      local current_event = room.logic:getCurrentEvent()
      if not current_event then return end
      local turn_event = current_event:findParent(GameEvent.Turn, true)
      if not turn_event then return end
      local events = room.logic.event_recorder[GameEvent.Turn] or Util.DummyTable
      for _, e in ipairs(events) do
        local current_player = e.data[1]
        if current_player == player then
          if turn_event.id == e.id then
            room:setPlayerMark(player, "jianjie-turn", 1)
          end
          break
        end
      end
    else
      doJianjieMarkChange (room, player, "@@dragon_mark", false)
      doJianjieMarkChange (room, player, "@@phoenix_mark", false)
    end
  end,
}--
local meng__baonve = fk.CreateTriggerSkill{
  name = "meng__baonve"

}--

local meng__benghuai = fk.CreateTriggerSkill{
  name = "meng__benghuai",
  anim_type = "negative",
  frequency = Skill.Compulsory,
  events = {fk.EventPhaseStart},
  can_trigger = function(self, event, target, player, data)
    return target == player and player:hasSkill(self) and player.phase == Player.Finish 
  end,
  on_use = function(self, event, target, player, data)
    local room = player.room
    local n = 0
    for _, p in ipairs(Fk:currentRoom().alive_players) do
      if p:isFemale() then
          n = n + 1
          end
        if n > 0 then 
          room:loseHp(player, 1, self.name)
          end
        end
  end,
}
local meng__shenfen = fk.CreateActiveSkill{
  name = "meng__shenfen",
  anim_type = "offensive",
  frequency = Skill.Limited,
  can_use = function(self, player)
    return player:usedSkillTimes(self.name, Player.HistoryGame) == 0
  end,
  card_num = 0,
  target_num = 0,
  card_filter = Util.FalseFunc,
  on_use = function(self, room, effect)
    local player = room:getPlayerById(effect.from)
    local targets = room:getOtherPlayers(player, true)
    room:doIndicate(effect.from, table.map(targets, Util.IdMapper))
    table.forEach(targets, function(p)
      if not p.dead then room:damage{ from = player, to = p, damage = 1, skillName = self.name } end
    end)
    table.forEach(targets, function(p)
      if not p.dead then p:throwAllCards("e") end
    end)
    table.forEach(targets, function(p)
      if not p.dead then
        room:askForDiscard(p, 4, 4, false, self.name, false)
      end
    end)
  end
}
meng__dongzhuo:addSkill(meng__haoshou)
meng__dongzhuo:addSkill(meng__baonve)
meng__dongzhuo:addSkill(meng__benghuai)

meng__dongzhuo:addRelatedSkill(meng__shenfen)
meng__dongzhuo:addRelatedSkill("ol_ex__fencheng")
meng__dongzhuo:addRelatedSkill("shenwei")
meng__dongzhuo:addRelatedSkill("wushuang")
meng__dongzhuo:addRelatedSkill("m_ex__mieji")
meng__dongzhuo:addRelatedSkill("m_ex__juece")
Fk:loadTranslationTable{
  ["meng__dongzhuo"] = "盟董卓（未完）",
  ["designer:meng__dongzhuo"] = "妄生",
  ["meng__haoshou"] = "豪首",
  [":meng__haoshou"] = "你的回合开始时，你收回场上的“文印”和“武印”，并令一名其他角色获得“文印”，然后令一名其他角色获得“武印”；"..
  "<br><font color='grey'>•拥有 “文印”/“武印” 的角色视为拥有技能“绝策”和“灭计”/“神威”和“无双”；"..
  "<br>•同时拥有“文印”和“武印”的角色视为拥有技能“焚城”和“神愤”，且发动“焚城”或“神愤”后在回合结束时移去“文印”和“武印”。"..
  "<br>•你死亡时移除“文印”/“武印”。",
  ["meng__baonve"] = "暴虐",
  [":meng__baonve"] = "若拥有“文印”或“武印”的角色对你造成伤害时，此伤害+1；若未拥有“文印”或“武印”的角色对你造成伤害，且场上存在拥有“文印”或“武印”的角色时，此伤害-1.",
  ["meng__benghuai"] = "崩坏",
  [":meng__benghuai"] = "锁定技，结束阶段，若场上存在女性角色，你失去一点体力。",
  [[ ["2"] = "2",
  ["=2"] = "若场上存在袁绍且其存活，你获得技能【..】",
  ["meng__shenfen"] = "神愤",
  [":meng__shenfen"] = "限定技，你对所有其他角色各造成1点伤害，然后这些角色各弃置其装备区里的所有牌，各弃置四张手牌。",
  ["ol_ex__fencheng"] = "焚城",
  [":ol_ex__fencheng"] = "限定技，出牌阶段，你可以选择一名其他角色开始，所有其他角色依次选择一项：1.弃置任意张牌（须比上家弃置的牌多）；2.受到"..
  "你造成的2点火焰伤害。",
  ["shenwei"] = "神威",
  [":shenwei"] = "锁定技，摸牌阶段，你额外摸两张牌；你的手牌上限+2。",
  ["wushuang"] = "无双",
  [":wushuang"] = "锁定技，当你使用【杀】指定目标后，其使用【闪】抵消此【杀】的方式改为需连续使用两张【闪】；当你使用【决斗】指定目标后，或当你成为【决斗】的目标后，你令其打出【杀】响应此【决斗】的方式改为需连续打出两张【杀】。",
  ["m_ex__mieji"] = "灭计",
  [":m_ex__mieji"] = "出牌阶段限一次，你可以将一张黑色锦囊牌置于牌堆顶，令一名其他角色选择一项：1.将一张锦囊牌交给你；2.依次弃置两张非锦囊牌（不足则弃置一张）。",
  ["m_ex__juece"] = "绝策",
  [":m_ex__juece"] = "结束阶段，你可以对本回合失去过牌的一名其他角色造成1点伤害。",

  


}]]



local meng__caopicaozhi = General:new(extension,"meng__caopicaozhi","wei",4)



Fk:loadTranslationTable{
  ["meng__caopicaozhi"] = "曹丕曹植",
  ["meng__qibushi"] = "七步诗",
  [":meng__qibushi"] = "出牌阶段限？次，你可以令一名角色回答《?》选择题，" ..
  "若答对则展示所有手牌，且不能再对其使用，答错或未作答的角色失去两点体力；"..
  "当你处于濒死状态时，你可以进行一次答题，若答对则回复体力至一点，答错则不能使用【桃】。"
 }



return extension  